layui.define(['pro', 'xmSelect'], function (exports) {
    var layer = layui.layer;
    var $ = layui.$;
    var pro = layui.pro;
    var table = layui.table;
    var form = layui.form;

    // 渲染
    table.render({
        elem: '#id_table',
        url: '/api/systemDictData/findByCondition',
        toolbar: 'default',
        defaultToolbar: ['filter', 'exports'],
        height: 'full',
        css: [
            // 对开启了编辑的单元格追加样式
            '.layui-table-view td[data-edit]{color: #16B777;}'
        ].join(''),
        cols: [function () {
            var arr = [
                {checkbox: true, fixed: true},
                {field: 'id', title: 'ID', width: 40, fixed: 'left'},
                {field: 'sort', title: '字典排序', width: 180},
                {field: 'label', title: '字典标签', width: 180},
                {field: 'value', title: '字典键值', width: 180},
                {field: 'dictType', title: '字典类型', width: 180},
                {field: 'status', title: '状态（0正常 1停用）', width: 180},
                {field: 'colorType', title: '颜色类型', width: 180},
                {field: 'cssClass', title: 'css 样式', width: 180},
                {title: '操作', fixed: 'right', toolbar: '#operatorCol'}
            ];
            return arr;
        }()]
    });

    // 工具栏事件
    table.on('toolbar(id_table)', function (obj) {
        var id = obj.config.id;//config 是表格配置，id=id_table
        switch (obj.event) {
            case 'add':
                openAddDialog();
                break;
            case 'update':
                pro.alertWarn('暂不支持批量编辑，敬请期待！');
                break;
            case 'delete':
                var data = table.checkStatus(id).data;//获取选中行
                if (data.length == 0) {
                    pro.alertWarn('请至少选择一行数据进行操作');
                    return;
                } else {
                    pro.alertWarn('暂不支持批量删除，敬请期待！');
                    return;
                }
                break;
        }

    });

    // 触发单元格工具事件
    table.on('tool(id_table)', function (obj) {
        var event = obj.event;
        if (event === 'edit') {
            pro.alertWarn('暂不支持编辑，敬请期待！');
        } else if (event === 'del') {
            pro.confirm("你确认要删除数据吗？").then(() => {
                    return pro.ajax(
                        {
                            type: 'post',
                            url: '/api/systemDictData/remove/' + obj.data.id
                        }
                    );
                }
            ).then(function (r) {
                pro.alertInfo('删除成功！');
                table.reload('id_table', {});
            }).catch(function (msg) {
                pro.alertError('删除失败:' + msg || '');
            });
        }
    });

    // 搜索提交
    form.on('submit(id_search)', function (data) {
        var field = data.field; // 获得表单字段
        // 执行搜索重载
        table.reload('id_table', {
            page: {
                curr: 1 // 重新从第 1 页开始
            },
            where: field // 搜索的字段
        });
        return false; // 阻止默认 form 跳转
    });

    /**
     * 添加模版弹窗
     * @param data
     * @returns 无
     */
    function openAddDialog() {
        layer.open({
            type: 1,// page 层类型
            area: ['auto', 'auto'],
            title: '新增模版',
            skin: 'layui-layer-molv',
            shade: [0.9, '#000'], // 遮罩
            shadeClose: false, // 点击遮罩区域，关闭弹层
            maxmin: true, // 允许全屏最小化
            anim: 0, // 0-6 的动画形式，-1 不开启
            closeBtn: 0,//  不显示关闭图标
            content: $('#id_add_dialog'), // 捕获的元素
            btn: ["保存", "取消"],
            yes: (index, layero) => {
                form.submit('id_from_dialog', (data) => {
                    pro.ajax(
                        {
                            type: "POST",
                            url: "/api/systemDictData/add",
                            data: JSON.stringify(data.field),
                            contentType: 'application/json'
                        }
                    ).then((r) => {
                        layer.closeAll();
                        pro.alertInfo('新增成功！');
                        table.reload('id_table', {});
                    }).catch((msg) => {
                        pro.alertError('新增失败！' + msg || '');
                    });
                    return false; // 阻止默认 form 跳转
                });
            },
            cancel: (index, layero, that) => {
                if (confirm('确定要关闭么')) {
                    layer.close(index);
                }
                return false; // 阻止默认关闭行为
            }
        });
    }

    exports('dictDataIndex', {});
});